
import java.util.Random;

@SuppressWarnings("rawtypes")
public class Params<T extends Driver> {

    //General parameters
    
    public static boolean N_TIMES = true;
    
//    public static long EXPERIMENT_ID = System.currentTimeMillis();
    public static int NUM_THREADS = 100;
    public static int NUM_EPISODES = 500;
    public static int NUM_ITERATIONS = 100;
    public static boolean ORTUZAR_FUNCTION = true;
    public static long EXPERIMENT_ID = System.currentTimeMillis();
    public static Random RANDOM = new Random(EXPERIMENT_ID);

    //Q-learning-specific parameters
    public static float QL_ALPHA = 0.82f;
    public static float QL_GAMMA = 0.91f;
//    public static float QL_ALPHA = 0.55f;
//    public static float QL_GAMMA = 0.90f;
    public static boolean WLU = false;

    //Epsilon-greedy-specific parameters
    public static float EG_EPSILON_DEFAULT = 1.0f;
    public static float EG_EPSILON;
    public static float EG_DECAYRATE = 0.99f;
	//public static double EG_DECAYRATE = 0.977237221;//1.0 > 0.1 in 100 timesteps
    //public static double EG_DECAYRATE = 0.933254301;

    //"Adviced Q-learning"-specific parameters
    public double AQL_ALPHA = QL_ALPHA;
    public double AQL_GAMMA = QL_GAMMA;
    public static double AQL_TIMES;

    public double getQL_ALPHA() {
        return QL_ALPHA;
    }

   

    public double getQL_GAMMA() {
        return QL_GAMMA;
    }

    

}
